package cn.rkylin.oms.warehouseDocking.adapter;

import java.util.Map;

import cn.rkylin.oms.warehouse.returnStockin.vo.ReturnStockinVO;
import cn.rkylin.oms.warehouse.shiporder.vo.ShiporderVO;

/**
 * 仓库访问者
 * 
 * @author jipengcheng
 * @created 2017年10月16日
 */
public abstract class WarehouseDockingVisitor {

    /**
     * 同步商品
     * 
     * @param shopId
     * @return 1成功，0失败
     */
    public abstract int synchronizeGoods(String shopId, Map<String, Object> paramMap) throws Exception;

    /**
     * 其他出库单创建
     *
     * @param shopId
     * @return 1成功，0失败
     */
    public abstract int otherStockoutCreate(String shopId, Map<String, Object> paramMap) throws Exception;

    /**
     * 奇门取消退货入库单
     * 
     * @param returnStockInVO
     *            退货入库单VO
     * @return 结果Map
     * @throws Exception
     *             异常
     */
    public abstract int cancelReturnStockin(ReturnStockinVO returnStockInVO) throws Exception;

    /**
     * 手动取消发货单
     *
     * @throws Exception
     */
    public abstract int manualCancelShiporder(ShiporderVO shiporderVO) throws Exception;

    /**
     * 自动取消发货单
     *
     * @throws Exception
     */
    public abstract int autoCancelShiporder(String shopId, Map<String, Object> paramMap) throws Exception;

    /**
     * 发货单创建
     *
     * @param shopId
     * @return 1成功，0失败
     */
    public abstract int shipOrderCreate(String shopId, Map<String, Object> paramMap) throws Exception;

    /**
     * 获取仓库库存(多商品)
     * 
     * @return
     */
    public abstract int getInventory(String shopId, Map<String, Object> paramMap) throws Exception;

    /**
     * 退货入库单创建
     *
     * @param shopId
     * @return 1成功，0失败
     */
    public abstract int returnOrderCreate(String shopId, Map<String, Object> paramMap) throws Exception;

    /**
     * 入库单创建
     *
     * @param shopId
     * @return 1成功，0失败
     */
    public abstract int entryOrderCreate(String shopId, Map<String, Object> paramMap) throws Exception;

}
